/**
 * 
 */
package br.com.ac.fatureweb.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;

import br.com.ac.fatureweb.integration.enums.EnumStatus;
import br.com.ac.fatureweb.integration.enums.EnumTypeCadastrador;
import br.com.ac.fatureweb.model.carga.LeituristaSaae;

/**
 * @author aldivone
 *
 */
@Entity
@Table(name = "LEITURISTA")
@SequenceGenerator(name = "SEQ_LEITURISTA", sequenceName = "SEQ_LEITURISTA", allocationSize = 1, initialValue = 1)
public class Leiturista extends Leitura3 {

	/**
	 * 
	 */
	private static final long serialVersionUID = -2391619778938313843L;

	@Id
	@GeneratedValue(generator = "SEQ_LEITURISTA", strategy = GenerationType.SEQUENCE)
	@Column(name = "ID")
	private Long id;

	@Column(name = "CODIGO", unique = true)
	private Long codigo;

	@Column(name = "NOME")
	private String nome;

	@Column(name = "ENDERECO")
	private String endereco;

	@Column(name = "NUMERO")
	private Long numero;

	@Column(name = "COMPLEMENTO")
	private String complemento;

	@Column(name = "DDD_TELEFONE")
	private Long dddTelefone;

	@Column(name = "TELEFONE")
	private Long telefone;

	@Column(name = "TIPO_CADASTRADOR")
	@Enumerated(EnumType.ORDINAL)
	private EnumTypeCadastrador enumTipoCadastrador;

	@Column(name = "SENHA")
	private String senha;

	@Column(name = "DATA_GERACAO_SENHA")
	private Date dataGeracaoSenha;

	@Column(name = "FLG_ATUALIZA_SENHA")
	private Boolean flgAtualizaSenha;

	@Column(name = "CPF")
	private String cpf;

	@Column(name = "STATUS")
	@Enumerated(EnumType.ORDINAL)
	private EnumStatus status;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "COD_SAAE", referencedColumnName = "ID")
	private LeituristaSaae leituristaSaae;

	public Leiturista() {
		super();
	}

	public Leiturista(Long id) {
		super();
		this.id = id;
	}

	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public Leiturista(Long id, Long codigo, String nome, String endereco,
			Long numero, String complemento, Long dddTelefone, Long telefone,
			EnumTypeCadastrador enumTipoCadastrador, String senha,
			Date dataGeracaoSenha, Boolean flgAtualizaSenha, String cpf,
			EnumStatus status, LeituristaSaae leituristaSaae) {
		super();
		this.id = id;
		this.codigo = codigo;
		this.nome = nome;
		this.endereco = endereco;
		this.numero = numero;
		this.complemento = complemento;
		this.dddTelefone = dddTelefone;
		this.telefone = telefone;
		this.enumTipoCadastrador = enumTipoCadastrador;
		this.senha = senha;
		this.dataGeracaoSenha = dataGeracaoSenha;
		this.flgAtualizaSenha = flgAtualizaSenha;
		this.cpf = cpf;
		this.status = status;
		this.leituristaSaae = leituristaSaae;
	}

	/**
	 * @return the codigo
	 */
	public Long getCodigo() {
		return codigo;
	}

	/**
	 * @param codigo
	 *            the codigo to set
	 */
	public void setCodigo(Long codigo) {
		this.codigo = codigo;
	}

	/**
	 * @return the nome
	 */
	public String getNome() {
		return nome;
	}

	/**
	 * @param nome
	 *            the nome to set
	 */
	public void setNome(String nome) {
		this.nome = nome;
	}

	/**
	 * @return the endereco
	 */
	public String getEndereco() {
		return endereco;
	}

	/**
	 * @param endereco
	 *            the endereco to set
	 */
	public void setEndereco(String endereco) {
		this.endereco = endereco;
	}

	/**
	 * @return the numero
	 */
	public Long getNumero() {
		return numero;
	}

	/**
	 * @param numero
	 *            the numero to set
	 */
	public void setNumero(Long numero) {
		this.numero = numero;
	}

	/**
	 * @return the complemento
	 */
	public String getComplemento() {
		return complemento;
	}

	/**
	 * @param complemento
	 *            the complemento to set
	 */
	public void setComplemento(String complemento) {
		this.complemento = complemento;
	}

	/**
	 * @return the dddTelefone
	 */
	public Long getDddTelefone() {
		return dddTelefone;
	}

	/**
	 * @param dddTelefone
	 *            the dddTelefone to set
	 */
	public void setDddTelefone(Long dddTelefone) {
		this.dddTelefone = dddTelefone;
	}

	/**
	 * @return the telefone
	 */
	public Long getTelefone() {
		return telefone;
	}

	/**
	 * @param telefone
	 *            the telefone to set
	 */
	public void setTelefone(Long telefone) {
		this.telefone = telefone;
	}

	/**
	 * @return the enumTipoCadastrador
	 */
	public EnumTypeCadastrador getEnumTipoCadastrador() {
		return enumTipoCadastrador;
	}

	/**
	 * @param enumTipoCadastrador
	 *            the enumTipoCadastrador to set
	 */
	public void setEnumTipoCadastrador(EnumTypeCadastrador enumTipoCadastrador) {
		this.enumTipoCadastrador = enumTipoCadastrador;
	}

	/**
	 * @return the senha
	 */
	public String getSenha() {
		return senha;
	}

	/**
	 * @param senha
	 *            the senha to set
	 */
	public void setSenha(String senha) {
		this.senha = senha;
	}

	/**
	 * @return the dataGeracaoSenha
	 */
	public Date getDataGeracaoSenha() {
		return dataGeracaoSenha;
	}

	/**
	 * @param dataGeracaoSenha
	 *            the dataGeracaoSenha to set
	 */
	public void setDataGeracaoSenha(Date dataGeracaoSenha) {
		this.dataGeracaoSenha = dataGeracaoSenha;
	}

	/**
	 * @return the flgAtualizaSenha
	 */
	public Boolean getFlgAtualizaSenha() {
		return flgAtualizaSenha;
	}

	/**
	 * @param flgAtualizaSenha
	 *            the flgAtualizaSenha to set
	 */
	public void setFlgAtualizaSenha(Boolean flgAtualizaSenha) {
		this.flgAtualizaSenha = flgAtualizaSenha;
	}

	/**
	 * @return the cpf
	 */
	public String getCpf() {
		return cpf;
	}

	/**
	 * @param cpf
	 *            the cpf to set
	 */
	public void setCpf(String cpf) {
		this.cpf = cpf;
	}

	/**
	 * @return the status
	 */
	public EnumStatus getStatus() {
		return status;
	}

	/**
	 * @param status
	 *            the status to set
	 */
	public void setStatus(EnumStatus status) {
		this.status = status;
	}

	/**
	 * @return the leituristaSaae
	 */
	public LeituristaSaae getLeituristaSaae() {
		return leituristaSaae;
	}

	/**
	 * @param leituristaSaae
	 *            the leituristaSaae to set
	 */
	public void setLeituristaSaae(LeituristaSaae leituristaSaae) {
		this.leituristaSaae = leituristaSaae;
	}

}
